#include "widget.h"

#include <QApplication>
//多元素控件+QListWidget纵向列表控件
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    return a.exec();
}
/*
 * Qt中的多元素控件：
 * 列表
 * QListWidget
 * QListView
 * 表格
 * QTableWidget
 * QTableView
 * 树形结构
 * QTreeWidget
 * QTreeView
 *
 * xxView 和 xxWidget控件的区别
 *      xxView控件是更底层的控件，更加接近底层。xxWidget控件是基于xxView封装起来的。
 *      此处，xxView控件是MVC结构的一种典型实现
 *      MVC是软件开发中的一种软件结构组织形式
 *      M(model):数据 V(view):视图 C(controller):控制器-数据和视图之间的业务流程
 * 此处，xxView只是负责实现视图，不负责数据如何存储表示(数据)，不负责数据和视图之间的交互。
 * 因此如果使用xxView时，只有视图功能，剩下的数据、控制器需要自己实现
 * xxWidget是基于xxView实现的，xxWidget的数据、视图、控制器都已经被实现好了，可以直接使用。
 *
*/
/*
 * QListWidget纵向列表控件
 * 纵向列表中每个选项都可以被选中
 * 列表中每个元素/每一项都是一个Item(元素、条目),通过QListWidgetItem类表示的Item
 *
 * 属性
 * currentRow属性：当前被选中的元素是第几行-当前选中元素的行号 从0开始
 * count属性：此纵向列表控件一共有多少行
 * sortingEnabled属性：是否允许排序
 * isWrapping属性：是否允许换行
 * itemAlignment属性：元素的对齐方式。即在一个条目中，文本的对齐方式
 * selectRectVisible属性：被选中的元素矩形是否可见，被选中的元素是否有高亮效果
 * spacing属性：元素之间的间隔
 *
 * 方法
 * addItem(const QString &label)/addItem(QListWidgetItem *item)：列表中添加元素
 * currentItem()：返回一个QListWidgetItem *指针对象，表示当前选中的元素内容的指针
 * setCurrentItem(QListWidgetItem *item)：设置选中哪个元素-根据元素内容选中
 * setCurrentRow(int row)：设置选中第几行的元素
 * insertItem(const QString &label, int row)/insertItem(QListWidgetItem *item, int row)：在指定位置插入元素
 *      label,item：元素文本内容 row：此元素的下标是多少
 * item(int row)：返回QListWidgetItem *指针对象，表示第row行的元素
 * takeItem(int row)：删除指定第row行的元素，返回QListWidgetItem*指针对象，表示被删除的元素的文本内容地址
 *      删除 术语：take/erase/remove/delete
 *
 * 信号
 * currentItemChanged(QListWidgetItem* current, QListWidgetItem* old)
 *      当选中的元素发生改变时，触发此信号。
 *      current:新选中的元素  old：之前选中的元素
 * currentRowChanged(int)：当选中的元素发生改变时触发。参数是新选中/当前选中的元素的行号
 * itemClicked(QListWidgetItem *item)：单机某个元素时触发
 * itemDoubleClicked(QListWidgetItem *item)：双击某个元素时触发
 * itemEntered(QListWidgetItem *item)：鼠标进入元素时触发
 *
*/





















